import java.util.List;

class ListNode {
      int val;
      ListNode next;
      ListNode() {}
      ListNode(int val) { this.val = val; }
      ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 }

class Solution {
    public ListNode reverseList(ListNode head) {
        //处理空链表情况
        if(head==null){
            return null;
        }
        //处理单一节点链表情况
        if(head.next==null){
            return head;
        }
        //通过三指针方法实现反转
        ListNode pre=head;
        ListNode cur=pre.next;
        ListNode suc=cur.next;
        pre.next=null;
        while(suc!=null) {
            cur.next = pre;
            pre=cur;
            cur=suc;
            suc=suc.next;
        }
        //实现最后一个节点的反转
        cur.next=pre;
        pre=cur;
        return pre;
    }
}